// 简化版二维码生成工具
// 基于 weapp-qrcode 简化实现

/**
 * 生成二维码（使用在线API）
 * @param {string} text - 要编码的文本
 * @param {number} size - 二维码大小（默认280）
 * @returns {string} - 二维码图片URL
 */
function generateQRCode(text, size = 280) {
  // 使用第三方在线二维码API（免费、稳定）
  const encodedText = encodeURIComponent(text)
  return `https://api.qrserver.com/v1/create-qr-code/?size=${size}x${size}&data=${encodedText}`
}

/**
 * 生成带logo的二维码canvas
 * @param {object} options - 配置选项
 * @param {string} options.canvasId - canvas ID
 * @param {string} options.text - 要编码的文本  
 * @param {number} options.width - 宽度
 * @param {number} options.height - 高度
 * @param {string} options.logoPath - logo路径（可选）
 */
function drawQRCodeWithLogo(options) {
  const {
    canvasId,
    text,
    width = 280,
    height = 280,
    logoPath = ''
  } = options

  return new Promise((resolve, reject) => {
    const ctx = wx.createCanvasContext(canvasId)
    
    // 1. 先获取二维码图片
    const qrcodeUrl = generateQRCode(text, width)
    
    // 2. 下载二维码图片
    wx.downloadFile({
      url: qrcodeUrl,
      success: (res) => {
        if (res.statusCode === 200) {
          const tempFilePath = res.tempFilePath
          
          // 3. 绘制二维码
          ctx.drawImage(tempFilePath, 0, 0, width, height)
          
          // 4. 如果有logo，绘制logo（半透明背景）
          if (logoPath) {
            const logoSize = width * 0.25  // logo占二维码的25%
            const logoX = (width - logoSize) / 2
            const logoY = (height - logoSize) / 2
            
            // 绘制白色背景
            ctx.setFillStyle('#ffffff')
            ctx.fillRect(logoX - 5, logoY - 5, logoSize + 10, logoSize + 10)
            
            // 绘制logo
            ctx.drawImage(logoPath, logoX, logoY, logoSize, logoSize)
          }
          
          ctx.draw(false, () => {
            // 5. 导出为图片
            setTimeout(() => {
              wx.canvasToTempFilePath({
                canvasId: canvasId,
                success: (result) => {
                  resolve(result.tempFilePath)
                },
                fail: reject
              })
            }, 500)
          })
        } else {
          reject(new Error('下载二维码失败'))
        }
      },
      fail: reject
    })
  })
}

module.exports = {
  generateQRCode,
  drawQRCodeWithLogo
}

